package org.credo.thread.tongbu;

public class Draw extends Thread{
	
	private Account account;
	private double hopeGetMoney;
	
	public Draw(String name,Account account,double hopeGetMoney){
		super(name);
		this.account=account;
		this.hopeGetMoney=hopeGetMoney;
	}
	
//	//当多个线程修改同一个共享数据的时候,将会引发数据问题.
//	public void run(){
//		//使用account作为同步监视器,任何线程进入下面同步代码块之前必须先获得对account账户的锁定.
//		//其他线程无法获得锁,也就无法修改
//		//这种做法符合,  加锁---修改---释放锁   的逻辑.
//		synchronized (account) {
//			if(account.getMoney() >= hopeGetMoney){
//				System.out.println(account.getAccount()+"---"+getName()+"取钱成功,取出金额为:"+hopeGetMoney);
//				try {
//					Thread.sleep(1);
//				} catch (Exception e) {
//					e.printStackTrace();
//				}
//				//修改金额
//				account.setMoney(account.getMoney()-hopeGetMoney);
//				System.out.println("余额为:"+account.getMoney());
//			}else{
//				System.out.println("余额不足,取款失败!");
//			}
//		}
//		//结束,释放同步锁.
//	}
	
	public void run(){
		account.process(hopeGetMoney);
	}
	
}
